package Week1;

import java.util.*;

public class Day1 {
}

//牛客:BC153 数字统计
class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int L = in.nextInt(), R = in.nextInt();
        int count = 0;
        for(int i = L; i <= R; i++){
            int tmp = i;
            while(tmp != 0){
                //取每一位记录2的个数
                if(tmp % 10 == 2){
                    count++;
                }
                tmp /= 10;
            }
        }
        System.out.println(count);
    }
}

//牛客:NC313 两个数组的交集
class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param nums1 int整型ArrayList
     * @param nums2 int整型ArrayList
     * @return int整型ArrayList
     */
    public ArrayList<Integer> intersection (ArrayList<Integer> nums1, ArrayList<Integer> nums2) {
        // write code here
        //创建一个哈希表
        boolean[] hash = new boolean[1001];
        //创建一个集合
        ArrayList<Integer> ret = new ArrayList<>();
        //将数组1的所有元素对应的哈希表位置的值设为true，代表存在这个数
        for(int x : nums1){
            hash[x] = true;
        }

        //取数组2中的每个元素，在哈希表中进行查看，如果对应的值为true就将代表是两个数组的交集，将他放入集合中。然后将这个位置的值置为false防止重复计入
        for(int y : nums2){
            if(hash[y]){
                ret.add(y);
                hash[y] = false;
            }
        }
        //返回集合
        return ret;
    }
}


//牛客:AB5 点击消除
//方法一:栈
class Main1{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        char[] ch = s.toCharArray();
        int n = ch.length;
        //创建一个栈
        Stack<Character> stack = new Stack<>();
        //将元素放入栈中
        for(int i = 0; i < n; i++){
            //如果此时栈为空直接放入
            if(stack.isEmpty()){
                stack.push(ch[i]);
            }else{
                //如果不为空，取栈顶元素，与当前元素进行判断
                //如果相同就将栈顶元素出栈，且不放人元素
                if(stack.peek() == ch[i]){
                    stack.pop();
                }else{
                    //如果不同就放入栈中
                    stack.push(ch[i]);
                }
            }
        }

        //判断此时栈是否为空，为空返回0
        if(stack.isEmpty()){
            System.out.println("0");
        }else{
            //不为空，就按进入顺序放回剩余的元素
            StringBuffer ret = new StringBuffer();
            while(!stack.isEmpty()){
                ret.append(stack.pop()+"");
            }
            System.out.println(ret.reverse());
        }
    }
}

//方法二:模拟栈
class Main2 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        char[] ch = in.next().toCharArray();

        //创建一个StringBuffer类型的字符串存取去元素
        StringBuffer ret = new StringBuffer();
        for(int i = 0; i < ch.length; i++){
            //如果此时字符串不为0，判断当前的最后一个字符与此时的字符是否相同，相同就删去最后一个位置的字符
            if(ret.length() != 0 && ret.charAt(ret.length()-1) == ch[i]){
                ret.deleteCharAt(ret.length()-1);
            }else{
                //如果为0就直接添加到字符串中
                ret.append(ch[i]);
            }
        }

        //最后判断字符串是否含有元素，如果没有返回0，有就返回字符串本身
        System.out.println(ret.length() == 0 ? 0 : ret.toString());
    }
}